package day15.socketdemo08;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author Xiao
 * @date 2021/8/9
 */
public class ServerDemo08 {
    /**
     * 需求：
     * 客户端：将本地文件上传到服务器，接收服务器的反馈；
     * 服务器：接收客户端上传的文件，上传完毕之后给出反馈。
     */
    public static void main(String[] args) throws IOException {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                3,//核心线程数
                5,//最大线程数
                1,//临时线程空闲时间
                TimeUnit.MINUTES,//临时线程空闲时间单位
                new ArrayBlockingQueue<>(2),//阻塞队列
                Executors.defaultThreadFactory(),//创建线程的方式（创建线程工厂）
                new ThreadPoolExecutor.AbortPolicy());//拒绝策略
        ServerSocket ss = new ServerSocket(10000);
        int count = 0;
        while (true) {
            Socket so = ss.accept();
            count++;
            SocketThread st = new SocketThread(so);
            pool.submit(st);
            System.out.println("第" + count + "次上传完成。。。");
        }
//        ss.close();
    }
}
